#
# import pandas as pd
# from datetime import datetime
#
# # 定义状态常量
# VALID_ORDER_STATUS = [
#     '部分发货', '待发货', '待配货', '等待确认收货', '交易成功',
#     '卖家已发货，等待买家确认', '已发货', '已发货，待签收',
#     '已发货未签收', '已完成', '已支付', '已签收',
#     '买家已付款，等待卖家发货', '等待出库', '(锁定)等待确认收货',
#     '完成', '已发货，待收货', '卖家部分发货', '买家已付款,等待卖家发货',
#     '卖家已发货', '买家已付款', '发货即将超时', '待买家收货', '待卖家发货'
# ]
#
# INVALID_AFTER_SALES_STATUS = [
#     '退款成功', '退款完成', '已全额退款', '(删除)等待出库',
#     '(删除)等待确认收货', '售后完成'
# ]
#
# # 抖音平台数据读取
# dou_files = [
#     (r'E:\每日\抖音1.xlsx', '抖音1'),
#     (r'E:\每日\抖音2.xlsx', '抖音2'),
#     (r'E:\每日\抖音3.xlsx', '抖音3'),
#     (r'E:\每日\抖音4.xlsx', '抖音4')
# ]
#
# dou_dfs = []
# for file_path, platform in dou_files:
#     df = pd.read_excel(file_path, dtype={'商品ID': str, '达人昵称': str, '选购商品': str})
#     df['平台'] = platform
#     dou_dfs.append(df)
# dou = pd.concat(dou_dfs)
#
# # 京东平台数据读取
# jd1 = pd.read_excel(r'E:\每日\JD.xlsx', dtype={'商品ID': str})
# jd2 = pd.read_excel(r'E:\每日\JD1.xlsx', dtype={'商品ID': str})
# jd = pd.concat([jd1, jd2])
# jd_qc = jd.drop_duplicates(subset=['订单号'])
#
# # 拼多多平台数据读取
# pdd_files = [
#     (r'E:\每日\PDD1.xlsx', '拼多多1店'),
#     (r'E:\每日\PDD2.xlsx', '拼多多2店'),
#     (r'E:\每日\PDD3.xlsx', '拼多多3店'),
#     (r'E:\每日\PDD4.xlsx', '拼多多4店'),
#     (r'E:\每日\PDD5.xlsx', '拼多多5店'),
#     (r'E:\每日\PDD6.xlsx', '拼多多6店')
# ]
#
# pdd_dfs = []
# for file_path, platform in pdd_files:
#     df = pd.read_excel(file_path, dtype={'商品id': str})
#     df['渠道'] = '拼多多'
#     df['平台'] = platform
#     pdd_dfs.append(df)
#
# # 快手平台数据读取
# ks1 = pd.read_excel(r'E:\每日\快手1.xlsx', dtype={'商品ID': str})
# ks1['平台'] = '快手1'
# ks2 = pd.read_excel(r'E:\每日\快手2.xlsx', dtype={'商品ID': str})
# ks2['平台'] = '快手2'
# ks3 = pd.read_excel(r'E:\每日\快手3.xlsx', dtype={'商品ID': str})
# ks3['平台'] = '快手3'
# ks = pd.concat([ks1, ks2, ks3])
# ks['渠道'] = '快手'
#
# # 其他平台数据读取
# xhs = pd.read_excel(r'E:\每日\小红书.xlsx', dtype={'规格ID': str})
# sph = pd.read_excel(r'E:\每日\视频号.xlsx', dtype={'商品spu': str})
# sph_qc = sph.drop_duplicates(subset=['订单号'])
# tm = pd.read_excel(r'E:\每日\天猫.xlsx', dtype={'商品id': str})
# tcc = pd.read_excel(r'E:\每日\淘宝买菜.xlsx')
# tgc = pd.read_excel(r'E:\每日\淘工厂.xlsx')
# tgc2 = pd.read_excel(r'E:\每日\淘工厂2.xlsx')
#
#
# # 抖音渠道分类函数
# def classify_douyin_channel(x, y, z, w, a, p):
#     """抖音渠道分类函数
#     x: 选购商品, y: 达人昵称, z: 流量来源, w: 流量类型, a: 流量体裁, p: 平台
#     """
#     # 代播
#     if 'zs2' in x or 'zz' in x or 'zs' in x:
#         return '代播'
#     elif y in ['宛禾食品旗舰店直播间', '宛禾牛宅', '宛禾速食旗舰店自播间', '宛禾食品旗舰店自播间']:
#         return '代播'
#
#     # 自播间
#     elif y == '宛禾米线官方旗舰店' or ('z1' in x) or ('Z1' in x):
#         return '自播间1.0'
#     elif y in ['宛禾米线速食官方旗舰店', '宛禾米线', '宛禾速食官方旗舰店', '宛禾食品', '宛禾速食直播间'] or (
#             'z3' in x) or ('Z3' in x):
#         return '自播间3.0'
#     elif y == '宛禾食品旗舰店' or ('z5' in x) or ('Z5' in x):
#         return '自播间5.0'
#     elif y in ['宛禾速食旗舰店', '宛禾食品旗舰店甄选号'] or ('z6' in x) or ('Z6' in x):
#         return '自播间6.0'
#     elif y == '宛禾官方旗舰店' or ('z8' in x) or ('Z8' in x):
#         return '自播间8.0'
#     elif y == '宛禾米线速食旗舰店' or ('lsf' in x):
#         return '螺蛳土豆粉直播间'
#     elif p == '抖音1' and ('dsp' in x):
#         return '自播间1.0'
#     elif p == '抖音2' and ('dsp' in x):
#         return '自播间5.0'
#     elif p == '抖音3' and ('dsp' in x):
#         return '自播间8.0'
#     elif p == '抖音4' and ('dsp' in x):
#         return '螺蛳土豆粉直播间'
#     # 其他分类
#     elif pd.notnull(y):
#         return '达人分发'
#     elif z == '精选联盟':
#         return '达人分发'
#     elif w == '广告' and a == '商品卡':
#         return '超级商品卡'
#     else:
#         return '自然单'
#
#
# # 应用抖音渠道分类
# dou['渠道'] = list(map(classify_douyin_channel,
#                        list(dou['选购商品']),
#                        list(dou['达人昵称']),
#                        list(dou['流量来源']),
#                        list(dou['流量类型']),
#                        list(dou['流量体裁']),
#                        list(dou['平台'])))
#
#
# # 数据标准化处理函数
# def standardize_columns(df, column_mapping, channel=None, platform=None):
#     """标准化数据框列名和添加渠道信息"""
#     df_standard = df.loc[:, list(column_mapping.keys())].copy()
#     df_standard.columns = list(column_mapping.values())
#
#     if channel:
#         df_standard['渠道'] = channel
#     if platform:
#         df_standard['平台'] = platform
#
#     return df_standard
#
#
# # 定义各平台列名映射
# dou_mapping = {
#     '商品ID': 'SKU', '商家编码': '商家编码', '商品数量': '商品数量',
#     '订单应付金额': '订单应付金额', '订单状态': '订单状态', '售后状态': '售后状态',
#     '订单应付金额': '退款金额', '订单提交时间': '日期', '渠道': '渠道', '平台': '平台'
# }
#
# jd_mapping = {
#     '商品ID': 'SKU', '商家SKUID': '商家编码', '订购数量': '商品数量',
#     '结算金额': '订单应付金额', '订单状态': '订单状态', '订单状态': '售后状态',
#     '结算金额': '退款金额', '下单时间': '日期'
# }
#
# pdd_mapping = {
#     '商品id': 'SKU', '商家编码-规格维度': '商家编码', '商品数量(件)': '商品数量',
#     '商家实收金额(元)': '订单应付金额', '订单状态': '订单状态', '售后状态': '售后状态',
#     '商家实收金额(元)': '退款金额', '支付时间': '日期'
# }
#
# ks_mapping = {
#     '商品ID': 'SKU', 'SKU编码': '商家编码', '成交数量': '商品数量',
#     '实付款': '订单应付金额', '订单状态': '订单状态', '售后状态': '售后状态',
#     '实付款': '退款金额', '订单创建时间': '日期', '渠道': '渠道', '平台': '平台'
# }
#
# xhs_mapping = {
#     '规格ID': 'SKU', '商家编码': '商家编码', 'SKU件数': '商品数量',
#     '商家应收金额(元)（支付金额）': '订单应付金额', '订单状态': '订单状态', '售后状态': '售后状态',
#     '商家应收金额(元)（支付金额）': '退款金额', '订单创建时间': '日期'
# }
#
# sph_mapping = {
#     '商品编码(平台)': 'SKU', 'SKU编码(自定义)': '商家编码', '商品数量': '商品数量',
#     '订单实际支付金额': '订单应付金额', '订单状态': '订单状态', '商品售后': '售后状态',
#     '商品已退款金额': '退款金额', '订单下单时间': '日期'
# }
#
# tm_mapping = {
#     '商品ID': 'SKU', '商家编码': '商家编码', '购买数量': '商品数量',
#     '买家实付金额': '订单应付金额', '订单状态': '订单状态', '退款状态': '售后状态',
#     '退款金额': '退款金额', '订单创建时间': '日期'
# }
#
# tcc_mapping = {
#     '商家编码': '商家编码', '宝贝数量': '商品数量',
#     '子单实际支付金额': '订单应付金额', '订单状态': '订单状态', '订单状态': '售后状态',
#     '退款金额': '退款金额', '订单创建时间': '日期'
# }
#
# # 标准化各平台数据
# dou_date = standardize_columns(dou, dou_mapping)
#
# jd_date = standardize_columns(jd, jd_mapping, '京东旗舰店', '京东旗舰店')
# jd_xse = standardize_columns(jd_qc, jd_mapping, '京东旗舰店', '京东旗舰店')
#
# pdd_dataframes = []
# for pdd_df in pdd_dfs:
#     pdd_standard = standardize_columns(pdd_df, pdd_mapping, '拼多多', pdd_df['平台'].iloc[0])
#     pdd_dataframes.append(pdd_standard)
#
# ks_date = standardize_columns(ks, ks_mapping)
# # 清理快手数据中的货币符号
# ks_date['订单应付金额'] = ks_date['订单应付金额'].map(lambda x: float(str(x).replace('¥', '')))
# ks_date['退款金额'] = ks_date['退款金额'].map(lambda x: float(str(x).replace('¥', '')))
#
# xhs_date = standardize_columns(xhs, xhs_mapping, '小红书', '小红书')
#
# sph_date = standardize_columns(sph, sph_mapping, '视频号', '视频号')
# sph_xse = standardize_columns(sph_qc, sph_mapping, '视频号', '视频号')
#
# tm_date = standardize_columns(tm, tm_mapping, '天猫旗舰店', '天猫旗舰店')
# # 清理天猫数据中的退款金额
# tm_date['退款金额'] = tm_date['退款金额'].map(lambda x: float(str(x).replace('无退款申请', '0')))
#
# tcc_date = standardize_columns(tcc, tcc_mapping, '淘宝买菜', '淘宝买菜')
# tgc_date = standardize_columns(tgc, tcc_mapping, '淘工厂', '淘工厂')
# tgc2_date = standardize_columns(tgc2, tcc_mapping, '淘宝买菜', '淘宝买菜')
#
# # 合并数据 - 销售额和单量分别处理
# # 销售额数据
# sales_dataframes = [dou_date, jd_xse] + pdd_dataframes + [ks_date, xhs_date, sph_xse, tm_date, tcc_date, tgc_date,
#                                                           tgc2_date]
# date_concat = pd.concat(sales_dataframes)
#
# # 单量数据
# quantity_dataframes = [dou_date, jd_date] + pdd_dataframes + [ks_date, xhs_date, sph_date, tm_date, tcc_date, tgc_date,
#                                                               tgc2_date]
# date_concat_1 = pd.concat(quantity_dataframes)
#
#
# # 数据清洗和标准化
# def clean_data(df):
#     """清洗数据：去空格、处理空值等"""
#     df['商家编码'] = df['商家编码'].str.strip()
#     df['SKU'] = df['SKU'].str.strip()
#     df.dropna(subset=['商家编码'], inplace=True)
#     return df.applymap(lambda x: str(x).strip())
#
#
# date_concat = clean_data(date_concat)
# date_concat_1 = clean_data(date_concat_1)
#
#
# # 处理日期和数值类型
# def process_data_types(df):
#     """处理日期和数值类型转换"""
#     df['日期'] = df['日期'].replace("", '1998-01-01 00:00:00')
#     df['日期'] = pd.to_datetime(df['日期'])
#     df['日期'] = df['日期'].map(lambda x: datetime.date(x))
#     df['商品数量'] = df['商品数量'].map(lambda x: int(float(x)))
#     df['订单应付金额'] = df['订单应付金额'].map(lambda x: float(x))
#     df['退款金额'] = df['退款金额'].map(lambda x: float(x))
#     return df
#
#
# date_concat = process_data_types(date_concat)
# date_concat_1 = process_data_types(date_concat_1)
#
# # 筛选发货订单 - 单量统计用
# date_concat_dl = date_concat_1[
#     (date_concat_1['订单状态'].isin(VALID_ORDER_STATUS)) &
#     (~date_concat_1['售后状态'].isin(INVALID_AFTER_SALES_STATUS)) &
#     (date_concat_1['订单应付金额'] >= 0.01)
#     ]
#
# # 排除特定赠品
# exclude_items = ['抖音直播间赠品', 'logo定制电煮锅1个', '红色电煮锅1个', '赠品']
# date_concat_dl = date_concat_dl[~date_concat_dl['商家编码'].isin(exclude_items)]
#
# # 聚合统计
# res = date_concat_dl.groupby([
#     date_concat_dl['日期'],
#     date_concat_dl['渠道'],
#     date_concat_dl['平台'],
#     date_concat_dl['商家编码']
# ], as_index=False).agg(
#     商品数量=('商品数量', 'sum'),
#     销售额=('订单应付金额', 'sum')
# )
#
# res.to_excel(r'E:\每日结果\SKU单量明细.xlsx')
#
#
# # 注意  有问题
#


# coding:utf-8
import pandas as pd
import csv
import re
import numpy as np
from datetime import datetime

# 读取文件

dou1 = pd.read_excel(r'E:\每日\抖音1.xlsx', dtype={'商品ID': str, '达人昵称': str, '选购商品': str})
dou1['平台'] = '抖音1'
dou2 = pd.read_excel(r'E:\每日\抖音2.xlsx', dtype={'商品ID': str, '达人昵称': str, '选购商品': str})
dou2['平台'] = '抖音2'
dou3 = pd.read_excel(r'E:\每日\抖音3.xlsx', dtype={'商品ID': str, '达人昵称': str, '选购商品': str})
dou3['平台'] = '抖音3'
dou4 = pd.read_excel(r'E:\每日\抖音4.xlsx', dtype={'商品ID': str, '达人昵称': str, '选购商品': str})
dou4['平台'] = '抖音4'
dou = pd.concat([dou1, dou2, dou3, dou4])

jd1 = pd.read_excel(r'E:\每日\JD.xlsx', dtype={'商品ID': str})
jd2 = pd.read_excel(r'E:\每日\JD1.xlsx', dtype={'商品ID': str})
jd = pd.concat([jd1, jd2])
jd_qc = jd.drop_duplicates(subset=['订单号'])  # 订单编号去重，统计销售额

pdd1 = pd.read_excel(r'E:\每日\PDD1.xlsx', dtype={'商品id': str})
pdd2 = pd.read_excel(r'E:\每日\PDD2.xlsx', dtype={'商品id': str})
pdd3 = pd.read_excel(r'E:\每日\PDD3.xlsx', dtype={'商品id': str})
pdd4 = pd.read_excel(r'E:\每日\PDD4.xlsx', dtype={'商品id': str})
pdd6 = pd.read_excel(r'E:\每日\PDD6.xlsx', dtype={'商品id': str})
pdd5 = pd.read_excel(r'E:\每日\PDD5.xlsx', dtype={'商品id': str})
# pdd1=pd.read_csv(r'E:\每日\PDD1.csv')
# pdd2=pd.read_csv(r'E:\每日\PDD2.csv')
ks1 = pd.read_excel(r'E:\每日\快手1.xlsx', dtype={'商品ID': str})
ks1['平台'] = '快手1'
ks2 = pd.read_excel(r'E:\每日\快手2.xlsx', dtype={'商品ID': str})
ks2['平台'] = '快手2'
ks3 = pd.read_excel(r'E:\每日\快手3.xlsx', dtype={'商品ID': str})
ks3['平台'] = '快手3'
ks = pd.concat([ks1, ks2, ks3])
ks['渠道'] = '快手'
xhs = pd.read_excel(r'E:\每日\小红书.xlsx', dtype={'规格ID': str})
sph = pd.read_excel(r'E:\每日\视频号.xlsx', dtype={'商品spu': str})
sph_qc = sph.drop_duplicates(subset=['订单号'])
tm = pd.read_excel(r'E:\每日\天猫.xlsx', dtype={'商品id': str})
tcc = pd.read_excel(r'E:\每日\淘宝买菜.xlsx')
tgc = pd.read_excel(r'E:\每日\淘工厂.xlsx')
tgc2 = pd.read_excel(r'E:\每日\淘工厂2.xlsx')


# 区分抖音渠道

def f(x, y, z, w, a, p):  # x:选购商品 y:达人昵称 z:流量来源 w:流量类型 a:流量体裁
    if 'zs2' in x or ('zz' in x):
        return '代播'
    elif 'zs' in x:
        return '代播'
    elif y == '宛禾食品旗舰店直播间' or y == '宛禾牛宅':
        return '代播'
    elif y == '宛禾速食旗舰店自播间' or y == '宛禾食品旗舰店自播间':
        return '代播'
    elif y == '宛禾米线官方旗舰店' or ('z1' in x) or ('Z1' in x):
        return '自播间1.0'
    elif y == '宛禾米线速食官方旗舰店' or y == '宛禾米线' or y == '宛禾速食官方旗舰店' or y == '宛禾食品' or y == '宛禾速食直播间' or (
            'z3' in x) or ('Z3' in x):
        return '自播间3.0'
    # elif y=='宛禾食品甄选号' or ('wzm' in x) :
    # return '窝子面直播间'
    elif y == '宛禾食品旗舰店' or ('z5' in x) or ('Z5' in x):
        return '自播间5.0'
    elif y == '宛禾速食旗舰店' or y == '宛禾食品旗舰店甄选号' or ('z6' in x) or ('Z6' in x):
        return '自播间6.0'
    elif y == '宛禾官方旗舰店' or ('z8' in x) or ('Z8' in x):
        return '自播间8.0'
    elif y == '宛禾米线速食旗舰店' or ('lsf' in x):
        return '螺蛳土豆粉直播间'
    elif p == '抖音1' and ('dsp' in x):
        return '自播间1.0'
    elif p == '抖音2' and ('dsp' in x):
        return '自播间5.0'
    elif p == '抖音3' and ('dsp' in x):
        return '自播间8.0'
    elif p == '抖音4' and ('dsp' in x):
        return '螺蛳土豆粉直播间'
    elif pd.notnull(y):
        return '达人分发'
    elif z == '精选联盟':
        return '达人分发'
    elif w == '广告' and a == '商品卡':
        return '超级商品卡'
    else:
        return '自然单'


dou['渠道'] = list(map(f, list(dou['选购商品']), list(dou['达人昵称']), list(dou['流量来源']), list(dou['流量类型']),
                       list(dou['流量体裁']), list(dou['平台'])))
# dou2['渠道']=list(map(f,list(dou2['选购商品']),list(dou2['达人昵称']),list(dou2['流量来源']),list(dou2['流量类型']),list(dou2['流量体裁'])))
# dou3['渠道']=list(map(f,list(dou3['选购商品']),list(dou3['达人昵称']),list(dou3['流量来源']),list(dou3['流量类型']),list(dou3['流量体裁'])))

dou_date = dou.loc[
    :, ['商品ID', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '订单应付金额', '订单提交时间',
        '渠道', '平台']]

dou_date.columns = ['SKU', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '退款金额', '日期', '渠道',
                    '平台']

jd_date = jd.loc[:, ['商品ID', '商家SKUID', '订购数量', '结算金额', '订单状态', '订单状态', '结算金额', '下单时间']]
jd_date['渠道'] = '京东旗舰店'
jd_date['平台'] = '京东旗舰店'
jd_date.columns = ['SKU', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '退款金额', '日期', '渠道',
                   '平台']

jd_xse = jd_qc.loc[:, ['商品ID', '商家SKUID', '订购数量', '结算金额', '订单状态', '订单状态', '结算金额', '下单时间']]
jd_xse['渠道'] = '京东旗舰店'
jd_xse['平台'] = '京东旗舰店'
jd_xse.columns = ['SKU', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '退款金额', '日期', '渠道',
                  '平台']

pdd1_date = pdd1.loc[
    :, ['商品id', '商家编码-规格维度', '商品数量(件)', '商家实收金额(元)', '订单状态', '售后状态', '商家实收金额(元)',
        '支付时间']]
pdd1_date['渠道'] = '拼多多'
pdd1_date['平台'] = '拼多多1店'
pdd1_date.columns = ['SKU', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '退款金额', '日期', '渠道',
                     '平台']
pdd2_date = pdd2.loc[
    :, ['商品id', '商家编码-规格维度', '商品数量(件)', '商家实收金额(元)', '订单状态', '售后状态', '商家实收金额(元)',
        '支付时间']]
pdd2_date['渠道'] = '拼多多'
pdd2_date['平台'] = '拼多多2店'
pdd2_date.columns = ['SKU', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '退款金额', '日期', '渠道',
                     '平台']

pdd3_date = pdd3.loc[
    :, ['商品id', '商家编码-规格维度', '商品数量(件)', '商家实收金额(元)', '订单状态', '售后状态', '商家实收金额(元)',
        '支付时间']]
pdd3_date['渠道'] = '拼多多'
pdd3_date['平台'] = '拼多多3店'
pdd3_date.columns = ['SKU', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '退款金额', '日期', '渠道',
                     '平台']

pdd4_date = pdd4.loc[
    :, ['商品id', '商家编码-规格维度', '商品数量(件)', '商家实收金额(元)', '订单状态', '售后状态', '商家实收金额(元)',
        '支付时间']]
pdd4_date['渠道'] = '拼多多'
pdd4_date['平台'] = '拼多多4店'
pdd4_date.columns = ['SKU', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '退款金额', '日期', '渠道',
                     '平台']

pdd6_date = pdd6.loc[
    :, ['商品id', '商家编码-规格维度', '商品数量(件)', '商家实收金额(元)', '订单状态', '售后状态', '商家实收金额(元)',
        '支付时间']]
pdd6_date['渠道'] = '拼多多'
pdd6_date['平台'] = '拼多多6店'
pdd6_date.columns = ['SKU', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '退款金额', '日期', '渠道',
                     '平台']

pdd5_date = pdd5.loc[
    :, ['商品id', '商家编码-规格维度', '商品数量(件)', '商家实收金额(元)', '订单状态', '售后状态', '商家实收金额(元)',
        '支付时间']]
pdd5_date['渠道'] = '拼多多'
pdd5_date['平台'] = '拼多多5店'
pdd5_date.columns = ['SKU', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '退款金额', '日期', '渠道',
                     '平台']

ks_date = ks.loc[
    :, ['商品ID', 'SKU编码', '成交数量', '实付款', '订单状态', '售后状态', '实付款', '订单创建时间', '渠道',
        '平台']]  # 2月27日 退货退款列改为售后状态
# ks_date['渠道']='快手'
# ks1_date['平台']='快手1'
ks_date.columns = ['SKU', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '退款金额', '日期', '渠道',
                   '平台']
ks_date['订单应付金额'] = ks_date['订单应付金额'].map(lambda x: float(str(x).replace('¥', '')))  ##去除￥符号
ks_date['退款金额'] = ks_date['退款金额'].map(lambda x: float(str(x).replace('¥', '')))  ##去除￥符号

# ks2_date=ks2.loc[:,['商品ID','SKU编码','成交数量','实付款','订单状态','售后状态','实付款','订单创建时间']]  #2月27日 退货退款列改为售后状态
# ks2_date['渠道']='快手'
# ks2_date['平台']='快手2'
# ks2_date.columns=['SKU','商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','日期','渠道','平台']
# ks2_date['订单应付金额']=ks2_date['订单应付金额'].map(lambda x: float(str(x).replace('¥',''))) ##去除￥符号
# ks2_date['退款金额']=ks2_date['退款金额'].map(lambda x: float(str(x).replace('¥',''))) ##去除￥符号

xhs_date = xhs.loc[:, ['规格ID', '商家编码', 'SKU件数', '商家应收金额(元)（支付金额）', '订单状态', '售后状态',
                       '商家应收金额(元)（支付金额）', '订单创建时间']]
xhs_date['渠道'] = '小红书'
xhs_date['平台'] = '小红书'
xhs_date.columns = ['SKU', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '退款金额', '日期', '渠道',
                    '平台']

sph_date = sph.loc[
    :, ['商品编码(平台)', 'SKU编码(自定义)', '商品数量', '订单实际支付金额', '订单状态', '商品售后', '商品已退款金额',
        '订单下单时间']]
sph_date['渠道'] = '视频号'
sph_date['平台'] = '视频号'
sph_date.columns = ['SKU', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '退款金额', '日期', '渠道',
                    '平台']

sph_xse = sph_qc.loc[
    :, ['商品编码(平台)', 'SKU编码(自定义)', '商品数量', '订单实际支付金额', '订单状态', '商品售后', '商品已退款金额',
        '订单下单时间']]
sph_xse['渠道'] = '视频号'
sph_xse['平台'] = '视频号'
sph_xse.columns = ['SKU', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '退款金额', '日期', '渠道',
                   '平台']

# tm_date=tm.loc[:,['商品id','商家编码','购买数量','买家实际支付金额','订单状态','退款状态','退款金额','订单创建时间']]
tm_date = tm.loc[
    :, ['商品ID', '商家编码', '购买数量', '买家实付金额', '订单状态', '退款状态', '退款金额', '订单创建时间']]
tm_date['渠道'] = '天猫旗舰店'
tm_date['平台'] = '天猫旗舰店'
tm_date['退款金额'] = tm_date['退款金额'].map(lambda x: float(str(x).replace('无退款申请', '0')))  # 替换无退款申请
tm_date.columns = ['SKU', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '退款金额', '日期', '渠道',
                   '平台']

tcc_date = tcc.loc[:, ['商家编码', '宝贝数量', '子单实际支付金额', '订单状态', '订单状态', '退款金额', '订单创建时间']]
tcc_date['渠道'] = '淘宝买菜'
tcc_date['平台'] = '淘宝买菜'
tcc_date.columns = ['商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '退款金额', '日期', '渠道', '平台']

tgc_date = tgc.loc[:, ['商家编码', '宝贝数量', '子单实际支付金额', '订单状态', '订单状态', '退款金额', '订单创建时间']]
tgc_date['渠道'] = '淘工厂'
tgc_date['平台'] = '淘工厂'
tgc_date.columns = ['商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '退款金额', '日期', '渠道', '平台']

tgc2_date = tgc2.loc[
    :, ['商家编码', '宝贝数量', '子单实际支付金额', '订单状态', '订单状态', '退款金额', '订单创建时间']]
tgc2_date['渠道'] = '淘宝买菜'
tgc2_date['平台'] = '淘宝买菜'
tgc2_date.columns = ['商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '退款金额', '日期', '渠道', '平台']
# 合并数据


# 销售额
date_concat = pd.concat(
    [dou_date, jd_xse, pdd1_date, pdd2_date, pdd3_date, pdd4_date, pdd6_date, pdd5_date, ks_date, xhs_date, sph_xse,
     tm_date, tcc_date, tgc_date, tgc2_date])  # 销售额，
# 单量
date_concat_1 = pd.concat(
    [dou_date, jd_date, pdd1_date, pdd2_date, pdd3_date, pdd4_date, pdd6_date, pdd5_date, ks_date, xhs_date, sph_date,
     tm_date, tcc_date, tgc_date, tgc2_date])  # 订单件数 单量

# ['商家编码']去空格
date_concat['商家编码'] = date_concat['商家编码'].str.strip()
date_concat_1['商家编码'] = date_concat_1['商家编码'].str.strip()
date_concat['SKU'] = date_concat['SKU'].str.strip()
date_concat_1['SKU'] = date_concat_1['SKU'].str.strip()
# 去掉 '商家编码' 为空的
date_concat.dropna(subset=['商家编码'], inplace=True)
date_concat_1.dropna(subset=['商家编码'], inplace=True)
# date_concat.to_excel(r'G:\结果\结果_全.xlsx')
date_concat_1 = date_concat_1.applymap(lambda x: str(x).strip())

# 打开数据库连接
date_concat_1['日期'] = date_concat_1['日期'].replace("", '1998-01-01 00:00:00')

date_concat_1['日期'] = pd.to_datetime(date_concat_1['日期'])
date_concat_1['日期'] = date_concat_1['日期'].map(lambda x: datetime.date(x))
date_concat_1['商品数量'] = date_concat_1['商品数量'].map(lambda x: int(float(x)))
date_concat_1['订单应付金额'] = date_concat_1['订单应付金额'].map(lambda x: float(x))
date_concat_1['退款金额'] = date_concat_1['退款金额'].map(lambda x: float(x))

date_concat = date_concat.applymap(lambda x: str(x).strip())

date_concat['日期'] = date_concat['日期'].replace("", '1998-01-01 00:00:00')

date_concat['日期'] = pd.to_datetime(date_concat['日期'])
date_concat['日期'] = date_concat['日期'].map(lambda x: datetime.date(x))
date_concat['商品数量'] = date_concat['商品数量'].map(lambda x: int(float(x)))
date_concat['订单应付金额'] = date_concat['订单应付金额'].map(lambda x: float(x))
date_concat['退款金额'] = date_concat['退款金额'].map(lambda x: float(x))

# 筛选发货订单，不去掉金额<=0.01,和赠品  单量，去掉退货成功的
date_concat_dl = date_concat_1[(date_concat_1['订单状态'] == '部分发货') | (date_concat_1['订单状态'] == '待发货') | (
            date_concat_1['订单状态'] == '待配货')
                               | (date_concat_1['订单状态'] == '等待确认收货') | (
                                           date_concat_1['订单状态'] == '交易成功')
                               | (date_concat_1['订单状态'] == '卖家已发货，等待买家确认') | (
                                           date_concat_1['订单状态'] == '已发货')
                               | (date_concat_1['订单状态'] == '已发货，待签收') | (
                                           date_concat_1['订单状态'] == '已发货未签收')
                               | (date_concat_1['订单状态'] == '已完成') | (date_concat_1['订单状态'] == '已支付') | (
                                           date_concat_1['订单状态'] == '已签收')
                               | (date_concat_1['订单状态'] == '买家已付款，等待卖家发货') | (
                                           date_concat_1['订单状态'] == '等待出库')
                               | (date_concat_1['订单状态'] == '(锁定)等待确认收货') | (
                                           date_concat_1['订单状态'] == '完成')
                               | (date_concat_1['订单状态'] == '已发货，待收货') | (
                                           date_concat_1['订单状态'] == '卖家部分发货') | (
                                           date_concat_1['订单状态'] == '买家已付款,等待卖家发货')
                               | (date_concat_1['订单状态'] == '卖家已发货') | (
                                           date_concat_1['订单状态'] == '买家已付款') | (
                                           date_concat_1['订单状态'] == '发货即将超时') | (
                                           date_concat_1['订单状态'] == '交易成功') | (
                                           date_concat_1['订单状态'] == '待买家收货') | (
                                           date_concat_1['订单状态'] == '待卖家发货')]
date_concat_dl = date_concat_dl[
    (date_concat_dl['售后状态'] != '退款成功') & (date_concat_dl['售后状态'] != '退款完成') & (
                date_concat_dl['售后状态'] != '已全额退款') & (date_concat_dl['售后状态'] != '(删除)等待出库') & (
                date_concat_dl['售后状态'] != '(删除)等待确认收货') & (date_concat_dl['售后状态'] != '售后完成')]
date_concat_dl = date_concat_dl[date_concat_dl['订单应付金额'] >= 0.01]
# 取前三
date_concat_dl = date_concat_dl[
    (date_concat_dl['商家编码'] != '抖音直播间赠品') & (date_concat_dl['商家编码'] != 'logo定制电煮锅1个') & (
                date_concat_dl['商家编码'] != '红色电煮锅1个') & (date_concat_dl['商家编码'] != '赠品')]
res = date_concat_dl.groupby(
    [date_concat_dl['日期'], date_concat_dl['渠道'], date_concat_dl['平台'], date_concat_dl['商家编码']],
    as_index=False).agg(商品数量=('商品数量', 'sum'), 销售额=('订单应付金额', 'sum'))

res.to_excel(r'E:\每日结果\SKU单量明细.xlsx',index=False)
